package com.zenchn.service;



import com.zenchn.entity.AreaTreeVO;
import com.zenchn.generic.GenericService;
import com.zenchn.model.TSysAreas;
import com.zenchn.model.TSysAreasExample;

import java.util.LinkedList;
import java.util.List;


/**
 * 地区  业务接口
 * 
 * @author dingxinfa
 * @date 2016-05-03
 **/
public interface AreasService extends GenericService<TSysAreas, String, TSysAreasExample> {
	
    /**
     * 查询下级地区 信息
     * 
     * @param code
     * @return
     */
    List<TSysAreas> selectByParentId(String code);

    /**
     * 查询下级启用地区 信息
     *
     * @param code
     * @return
     */
    List<TSysAreas> selectByParentIdAndIsEnable(String code);





    /***
     * 获取 地区 完整路径  地区信息(包含当前级)
     * @param code
     * @return
     */
    LinkedList<TSysAreas> findFullCascade(String code);



    /**
     * 查询 当前 及 下级地区 行政编码
     *
     * @param code
     * @return
     */
    List<String> selectCodeByParentCode(String code);

    /**
     * 通过 行政区编码简写 模糊查询 子集地区信息
     * @param shortCode  行政区编码简写
     * @param gradeList  返回的行政区等级
     * @return
     */
    List<TSysAreas> selectByLikeShortCode(String shortCode, List<String> gradeList);



    /***
     * 验证 地区名称唯一性
     * @param parentCode  上级地区编码
     * @param code 当前地区编码
     * @param name 地区名称
     * @return
     */
    Boolean verifyName(String parentCode, String code, String name);


    /**
     * 查询当前及子集启用地区 组装区域树
     *
     * @param code
     * @return
     */
    List<AreaTreeVO> getAreaTreebyAreaCodeAndIsEnable(String code);
}
